package strings;

/**
 * 给定一个正整数，返回它在 Excel 表中相对应的列名称。
 * <p>
 * 例如，
 * <p>
 * 1 -> A
 * 2 -> B
 * 3 -> C
 * ...
 * 26 -> Z
 * 27 -> AA
 * 28 -> AB
 * ...
 * 示例 1:
 * <p>
 * 输入: 1
 * 输出: "A"
 * 示例 2:
 * <p>
 * 输入: 28
 * 输出: "AB"
 * 示例 3:
 * <p>
 * 输入: 701
 * 输出: "ZY"
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/excel-sheet-column-title
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class ConvertToTitle {
//    public String convertToTitle(int n) {
//        if(n <= 0){
//            return "";
//        }
//        StringBuilder sb = new StringBuilder();
//        if(n > 26) {
//            sb.append(convertToTitle(n / 26));
//            sb.append(convertToTitle(n % 26));
//        } else {
//            sb.append((char)('A' + n - 1));
//        }
//        return sb.toString();
//    }

    public String convertToTitle(int n) {
        if (n <= 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int remainder;
        while (n != 0) {
            remainder = n % 26;
            n = n / 26;
            if (remainder == 0) {
                n--;
                remainder = 26;
            }
            sb.append(changeToChar(remainder));
        }

        return sb.reverse().toString();
    }

    private char changeToChar(int n) {
        return (char) ('A' + n - 1);
    }

    public static void main(String[] args) {
        System.out.println((new ConvertToTitle()).convertToTitle(701));
    }
}
